home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 5 / Amiga Tools 5.iso / tools / developer-tools / e-tools / plugins / frumsplugs / examples / iffbitmap.e < prev    next >
Encoding:
Text File  |  1992-09-02  |  2.7 KB  |  90 lines

  1. /* Example of frumSPlugs' BitMap plugin */
  2. -> $VER: IffBitMap.e V1.0 Stephen Sinclair (96.06.16)
  3.  
  4. OPT PREPROCESS,OSVERSION=37
  5.  
  6. MODULE 'iff','libraries/iff','graphics/gfx'
  7. MODULE 'workbench/workbench','intuition/intuition'
  8. MODULE 'tools/EasyGUI','Plugins/BitMap'
  9.  
  10. ENUM SUCCESS,ER_NOBMHD,ER_NOMEM,ER_DECODE
  11.  
  12. DEF planes:PTR TO LONG
  13. DEF myargs:PTR TO LONG,bmp:bitmap,bmhd:PTR TO bmh
  14.  
  15. /* The entire main procedure deals with opening the iff, allocating the **
  16. ** bitmaps and decoding the bitplanes.  Uses iff.library.               */
  17. PROC main() HANDLE
  18.   DEF iff,i
  19.   DEF rdargs
  20.  
  21.   myargs:=[0]
  22.   IF rdargs:=ReadArgs('ILBM_FILE/A',myargs,NIL)
  23.  
  24.     IF iffbase:=OpenLibrary('iff.library',23)
  25.           IF iff:=IfFL_OpenIFF(myargs[0],IFFL_MODE_READ)
  26.             IF bmhd:=IfFL_GetBMHD(iff)
  27.               WriteF('Initializing & Allocating bitmaps...\n')
  28.               InitBitMap(bmp,bmhd.nplanes,bmhd.width,bmhd.height)
  29.               planes:=bmp.planes
  30.               planes[0]:=AllocRaster(bmhd.width,bmhd.height*bmhd.nplanes)
  31.               IF planes[0]=NIL THEN Raise(ER_NOMEM)
  32.               FOR i:=1 TO bmhd.nplanes-1
  33.                 planes[i]:=planes[0]+(i*RASSIZE(bmhd.width,bmhd.height))
  34.               ENDFOR
  35.               WriteF('Decoding pic...\n')
  36.               IF IfFL_DecodePic(iff,bmp)
  37.                 WriteF('\s:  \dx\dx\d\n',myargs[0],bmhd.width,bmhd.height,bmhd.nplanes)
  38.                 creategui()
  39.               ELSE
  40.                 Raise(ER_DECODE)
  41.               ENDIF
  42.             ELSE
  43.               Raise(ER_NOBMHD)
  44.             ENDIF
  45.           ELSE
  46.             WriteF('Couldn''t open iff `\s''.\n',myargs[0])
  47.             Raise(0)
  48.           ENDIF
  49.     ELSE
  50.       WriteF('Couldn''t open iff.library v23+\n')
  51.       Raise(0)
  52.     ENDIF
  53.   ELSE
  54.     WriteF('Bad Args!\n')
  55.     CleanUp(0)
  56.   ENDIF
  57. EXCEPT DO
  58.   planes:=bmp.planes
  59.   FOR i:=0 TO bmhd.nplanes-1
  60.     IF planes[i] THEN FreeRaster(planes[i],bmhd.width,bmhd.height)
  61.   ENDFOR
  62.   IF iff THEN IfFL_CloseIFF(iff)
  63.   IF iffbase THEN CloseLibrary(iffbase)
  64.   IF rdargs THEN FreeArgs(rdargs)
  65.   IF exception>0
  66.     WriteF('\s\n',ListItem(['No bitmap header!',
  67.                             'Couldn''t allocate enough mem for bitmaps!',
  68.                             'Couldn''t decode the iff!'],exception-1))
  69.   ENDIF
  70. ENDPROC
  71.  
  72. CHAR '$VER: IffBitMap V1.0 Stephen Sinclair (96.06.16)',0
  73.  
  74. /* This is where the bitmap plugin is used */
  75. PROC creategui()
  76.   DEF plug:PTR TO bitmapplugin,s[30]:STRING
  77.   StrCopy(s,'ALIEN')
  78.   easygui('Test for BitMapPlugin',
  79.     [EQROWS,
  80.       [TEXT,'Bitmap:',NIL,TRUE,STRLEN],
  81.       [BEVEL,
  82.  
  83. /* put the bitmap from the iff brush into the gui */
  84.         [PLUGIN,0,NEW plug.bitmapplugin(bmp,0,0,bmhd.width,bmhd.height)]
  85.       ],
  86.       [BUTTON,0,'Okay']
  87.     ]
  88.   )
  89. ENDPROC
  90.